﻿var sid = 0;
var hid = 0;
var canedit = false;
var mode = 'NORMAL';

$(function() {
    canedit = ($('#canedit').val() == 'true');
    if (mode == 'NORMAL' && canedit) { $('.node>a.link>span.cm').click(showContextMenu).mouseout(function() { clearTimeout(sid); hid = setTimeout('hideContextMenu()', 400); }); }
});

//Перевод дерева в другой режим
function setMode(m) {
    switch (m) {
        case 'SELECTONE':
            mode = m;
            $('#popupcontainer').addClass('changed');
            break;
        default:
            mode = 'NORMAL';
            $('#popupcontainer').removeClass('changed');
            break;
    }
}

function expand(id, reload, skiptoggle) {
    parent.parent.document.getElementById("selectedfolderid").value = id;
    var li = $('li#node_' + id);
    var params = '?parentid='+id+'&mode=' + mode;
    var url = base + 'kb.ivp/node' + params;
    if (!reload && li.find('div.children').length > 0) {
        if(!skiptoggle) li.find('>div.children').toggle();
        syncImage(id);
    }
    else {
        $('li#node_' + id + '>.children').remove();
        li.append('<div class="children"></div>');
        var div = li.find('div.children');
        div.load(url, { timestamp: new Date().toString(), nolayout: true }, function() { syncImage(id); if (canedit && mode == 'NORMAL') { $('.node>a.link>span.cm', div).click(showContextMenu).mouseout(function() { clearTimeout(sid); hid = setTimeout('hideContextMenu()', 400); }); } });
    }
    return false;
}

function syncImage(id) {
    var li = $('li#node_' + id);
    var a = li.find('a.nodeicon:first');
    var img = a.find('img:first');
    var id = getId(a.parents('li.tn:first').attr('id'));
    
    //Есть дочки и они видны
    if (li.find('div.children .node').length > 0) {
        if (li.find('div.children').is(':visible'))
            img.attr('src', 'img/tree/minus.gif');
        else
            li.find('a.nodeicon:first > img').attr('src', 'img/tree/plus.gif');
    }
    else
        li.find('a.nodeicon:first > img').attr('src', 'img/_.gif');
}

//Вызывается при клике на название актива
function select(link, skipexpand) {
    link = $(link);
    parent.parent.document.getElementById("selectedfolderid").value = link.attr('nodeid');
    if (!skipexpand) expand(link.attr('nodeid'), false, true);
    switch (mode) {
        case 'SELECTONE':
            if (parent.frames.kb.setParent(link.attr('nodeid'), link.attr('path'), link.attr('breadcrumbs')))
                setMode('NORMAL');
            return false;
        default:
            $('a.selected').removeClass('selected');
            link.addClass('selected').blur();
            return true;
    }
}

function addAsset(id) {
    $('li#node_' + id).fadeOut('fast', function() { $('li#node_' + id).remove(); });
    var name = $('li#node_' + id + ' a.link').html();
    try {
        top.opener.assetSelected(id, name);
    } catch (e) { alert(e); }
    return false;
}

function hideContextMenu() {
    $('.contextmenu').hide();
}

function showContextMenu() {
    var id = getId($(this).parents('.tn:first').attr('id'));
    clearTimeout(hid);
    hideContextMenu();
    var nodeid = '#node_' + id;

    var link = $(nodeid).find('a.link:first').get(0);
    select(link, true);

    var popuppath = nodeid + '>.node>.contextmenu';
    var node = $(nodeid).children('.node');
    if ($(popuppath).length == 0) {
        var popup = node.append('<ul class="contextmenu"></ul>').children('.contextmenu');
        popup.append('<li onclick="return createChild(' + id + ')">' + 'Создать раздел' + '</li>');
        popup.append('<li onclick="return createDocument(' + id + ')"">' + 'Добавить документ' + '</li>');
        popup.append('<li onclick="return deleteKB(' + id + ')">' + 'Удалить раздел' + '</li>');
        $(popuppath).mouseover(function() { clearTimeout(hid); }).mouseout(function() { hid = setTimeout('hideContextMenu()', 500); });
    }
    var offset = node.offset();
    $(popuppath).css('left', offset.left + 50).css('top', offset.top + 10).show();
    return false;
}


function createChild(id) {
    var url = base + 'kb.ivp/create?parentid=' + id;
    parent.frames.kb.document.location.href = url
    return false;
}

function createDocument(id) {
    var url = base + 'kbdocument.ivp/create?parentid=' + id;
    parent.frames.kb.document.location.href = url
    return false;
}

function deleteKB(id) {
    if (!confirm('Вы уверены, что хотите удалить этот раздел и все входящие в него документы?')) return false;
    $.getJSON(base + 'kb.ivp/delete', { id: id, json: true, timestamp: new Date().toString() }, kbDeleted);
    return false;
}

function kbDeleted(result) {
    if (!result.IsOK) alert(result.Description);
    else {
        $('#node_' + result.Id).remove();
        parent.frames.kb.document.location.href = 'about:blank';
    }
}
